/*producto 	: MYSQL  Cliente DAO
 *Elaborado Por : Jorge Cardenas 
 * Proyeto 	: Sistema de mantenimiento correctivo
 * Sponsor 	: Maskiner. S.A.
 * Fecha 	: 24-01-2010
 * version  : 1.0
 * 
 * */

package com.maskiner.smc.comercial.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;


import com.maskiner.smc.comercial.bean.SolicitudDTO;
import com.maskiner.smc.util.MySqlDbConn;
public class MySqlSolicitudDAO implements SolicitudDAO {


public String registra(SolicitudDTO objSol) throws Exception {
		String codigo="";
		
		// Obtenemos una conexion
		Connection cn =  MySqlDbConn.getConMaskiner();
		
		// definimos la sentencia a ejecutar
		String sql = 
			"insert into tb_solicitud (" +
			"sol_codigo," +
			" sol_incidente," +
			" sol_observacion," +
			" sol_estado," +
			" sol_contacto," +
			"sol_telefono," +
			"sol_celular," +
			"sol_fechaaveria," +
			"equi_codigo," +
			"sol_asunto) " +
			"values(?,?,?,?,?,?,?,?,?,?)";
		
		// preparamos la sentencia
		PreparedStatement st=cn.prepareStatement(sql);
		
		
		java.sql.Date bdfecha= new java.sql.Date(objSol.getSol_fechaaveria().getTime());
		
		// asignamos valores a las interrogantes
		codigo=Correlativo();
		st.setString(1,codigo); 
		st.setString(2,objSol.getSol_incidente()); 
		st.setString(3,objSol.getSol_observacion()); 
		st.setInt(4,objSol.getSol_estado ()); 
		st.setString(5,objSol.getSol_contacto());
		st.setString(6,objSol.getSol_telefono());
		st.setString(7,objSol.getSol_celular());
		st.setDate(8,bdfecha);
		st.setString(9,objSol.getEqui_codigo());
		st.setString(10,objSol.getSol_asunto());
			
		// ejecutamos la sentencia
		st.executeUpdate();
		cn.close();
		
		
		return codigo;
		}


public String Correlativo()throws Exception {
	Connection cn = MySqlDbConn.getConMaskiner();
	String strSql="select max(sol_codigo) from tb_solicitud";
	PreparedStatement st=cn.prepareStatement(strSql);
	ResultSet rs=st.executeQuery();
	String Correlativo="";
	String codigo="1";
	System.out.println("esta es la primera" +codigo);
	if(rs.next()){
			codigo=	rs.getString(1);	
			System.out.println("esta es la segunda" +codigo);
	}
	cn.close();
	
	if(codigo==null  ||  codigo.equals("") )
		return "ss0001";
	else{
		String strCod1 = codigo.substring(0, 2);
		int corr = Integer.parseInt(codigo.substring(2, 6));
		corr++;
		if( corr < 10)
			codigo=strCod1+"000"+corr;
		else if(corr < 100 )
			codigo=strCod1+"00"+corr;
		else if ( corr<1000)
			codigo=strCod1+"0"+corr;
		else
			codigo=strCod1+""+corr;
		
	}
			
	return codigo;
}


public ArrayList<SolicitudDTO> listaSolicitud (String strSol_codigo,int intEstado) throws Exception {
	
	ArrayList<SolicitudDTO> solicitudes= new ArrayList<SolicitudDTO>();
	
	
	// Obtenemos una conexion
	Connection cn = MySqlDbConn.getConMaskiner();
	
	// definimos la sentencia a ejecutar
	String strSql = "select * from vista_solicitudes where sol_estado=? and  sol_codigo like ? ";
	
	// preparamos la sentencia
	PreparedStatement st=cn.prepareStatement(strSql);
	
	// asignamos valores a las interrogantes
	st.setInt(1,intEstado ); // el primer parametro representa
	st.setString(2,"%"+strSol_codigo+"%" );
							// el numero de la interrogante
	
	// ejecutamos la sentencia
	ResultSet rs=st.executeQuery();
	
	while(rs.next()){
		 
		SolicitudDTO solicitud = new SolicitudDTO();
		
		solicitud.setSol_codigo(rs.getString(1));
		solicitud.setSol_incidente(rs.getString(2));
		solicitud.setSol_observacion(rs.getString(3));
		solicitud.setSol_estado(rs.getInt(4));
		solicitud.setSol_contacto(rs.getString(5));
		solicitud.setSol_telefono(rs.getString(6));
		solicitud.setSol_celular(rs.getString(7));
		solicitud.setSol_fechaaveria(rs.getDate(8));
		solicitud.setFeccre(rs.getString(9));
		solicitud.setFecmod(rs.getString(10));
		solicitud.setUsuario(rs.getString(11));
		solicitud.setEqui_codigo(rs.getString(12));
		solicitud.setSol_asunto(rs.getString(13));
		solicitud.setCli_codigo(rs.getString(14));
		solicitud.setCli_razsoc(rs.getString(15));
		solicitud.setCli_ruc(rs.getString(16));
		solicitud.setEqui_serie(rs.getString(17));
		solicitud.setEqui_modelo(rs.getString(18));
		solicitud.setEqui_tipo(rs.getString(19));
		solicitud.setEqui_descripcion(rs.getString(20));
		solicitud.setEqui_marca(rs.getString(21));
		solicitud.setEqui_fecultmed(rs.getDate(22));
	
		
		// agregamos el bean al arreglo
		solicitudes.add(solicitud);
		
	}
	
	cn.close();
	System.out.println("pasa hasta listar solicitudes : \n"+ solicitudes.size()  );
	
	return solicitudes;

	
}

public SolicitudDTO consultaSolicitud (String strSol_codigo) throws Exception {
	
	
	// Obtenemos una conexion
	Connection cn = MySqlDbConn.getConMaskiner();
	
	// definimos la sentencia a ejecutar
	String strSql = "select * from vista_solicitudes where sol_codigo = ? ";
	
	// preparamos la sentencia
	PreparedStatement st=cn.prepareStatement(strSql);
	
	// asignamos valores a las interrogantes
	st.setString(1,"%"+strSol_codigo+"%" ); // el primer parametro representa
							// el numero de la interrogante
	
	// ejecutamos la sentencia
	ResultSet rs=st.executeQuery();
	
	SolicitudDTO solicitud=null ;
	
	while(rs.next()){
		 
		solicitud=new SolicitudDTO() ;
		solicitud.setSol_codigo(rs.getString(1));
		solicitud.setSol_incidente(rs.getString(2));
		solicitud.setSol_observacion(rs.getString(3));
		solicitud.setSol_estado(rs.getInt(4));
		solicitud.setSol_contacto(rs.getString(5));
		solicitud.setSol_telefono(rs.getString(6));
		solicitud.setSol_celular(rs.getString(7));
		solicitud.setSol_fechaaveria(rs.getDate(8));
		solicitud.setFeccre(rs.getString(9));
		solicitud.setFecmod(rs.getString(10));
		solicitud.setUsuario(rs.getString(11));
		solicitud.setEqui_codigo(rs.getString(12));
		solicitud.setSol_asunto(rs.getString(13));
		solicitud.setCli_codigo(rs.getString(14));
		solicitud.setCli_razsoc(rs.getString(15));
		solicitud.setCli_ruc(rs.getString(16));
		solicitud.setEqui_serie(rs.getString(17));
		solicitud.setEqui_modelo(rs.getString(18));
		solicitud.setEqui_tipo(rs.getString(19));
		solicitud.setEqui_descripcion(rs.getString(20));
		solicitud.setEqui_marca(rs.getString(21));
		solicitud.setEqui_fecultmed(rs.getDate(22));
				
	}
	
	cn.close();
	
	return solicitud;
}

public SolicitudDTO cargaPorEquipo(String equiCodigo) throws Exception {
		System.out.println("Codigo de equipo : " + equiCodigo);
		SolicitudDTO  solicitud = null;
		
		Connection cn = MySqlDbConn.getConMaskiner();
		String sql ="select " +
				"c.cli_codigo," +
				"c.cli_razsoc," +
				"c.cli_ruc," +
				"e.equi_codigo," +
				"e.equi_serie," +
				"e.equi_modelo," +
				"te.tp_equi_desc," +
				"e.equi_descripcion," +
				"e.equi_marca," +
				"e.equi_fecultmed " +
				"from tb_equipo e, tb_cliente c, tb_tipo_eq te " +
				"where e.cli_codigo=c.cli_codigo " +
				" and e.tp_equi_cod=te.tp_equi_cod "+
				" and e.equi_codigo=?";
		
		// preparamos la sentencia
		PreparedStatement st=cn.prepareStatement(sql);
		
		// asignamos valores a las interrogantes
		st.setString(1,equiCodigo); // el primer parametro representa
								// el numero de la interrogante
		
		// ejecutamos la sentencia
		ResultSet rs=st.executeQuery();
		
		if(rs.next()){
			 
			solicitud = new SolicitudDTO();
			solicitud.setCli_codigo(rs.getString(1));
			solicitud.setCli_razsoc(rs.getString(2));
			solicitud.setCli_ruc(rs.getString(3));
			solicitud.setEqui_codigo(rs.getString(4));
			solicitud.setEqui_serie(rs.getString(5));
			solicitud.setEqui_modelo(rs.getString(6));
			solicitud.setEqui_tipo(rs.getString(7));
			solicitud.setEqui_marca(rs.getString(8));
			solicitud.setEqui_descripcion(rs.getString(9));
			solicitud.setEqui_fecultmed(rs.getDate(10));
			
			}
		
		cn.close();
		
		return solicitud;
				
	}


	
}
